<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>vtablei</title>
    <link rel="stylesheet" type="text/css" href="csound.css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <link rel="home" href="index.html" title="The Canonical Csound Reference Manual" />
    <link rel="up" href="OpcodesTop.html" title="Orchestra Opcodes and Operators" />
    <link rel="prev" href="vtable1k.html" title="vtable1k" />
    <link rel="next" href="vtablek.html" title="vtablek" />
  </head>
  <body>
    <div class="navheader">
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">vtablei</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="vtable1k.html">Prev</a> </td>
          <th width="60%" align="center">Orchestra Opcodes and Operators</th>
          <td width="20%" align="right"> <a accesskey="n" href="vtablek.html">Next</a></td>
        </tr>
      </table>
      <hr />
    </div>
    <div class="refentry">
      <a id="vtablei"></a>
      <div class="titlepage"></div>
      <a id="IndexVtablei" class="indexterm"></a>
      <div class="refnamediv">
        <h2>
          <span class="refentrytitle">vtablei</span>
        </h2>
        <p>vtablei — 
     Read vectors (from tables -or arrays of vectors).

    </p>
      </div>
      <div class="refsect1">
        <a id="idp166811472"></a>
        <h2>Description</h2>
        <p>
	This opcode reads vectors from tables.
    </p>
      </div>
      <div class="refsect1">
        <a id="idp166812768"></a>
        <h2>Syntax</h2>
        <pre class="synopsis"><span class="command"><strong>vtablei</strong></span>  indx, ifn, interp, ixmode, iout1 [, iout2, iout3, .... , ioutN ]</pre>
      </div>
      <div class="refsect1">
        <a id="idp166879232"></a>
        <h2>Initialization</h2>
        <p>
      <span class="emphasis"><em>indx</em></span> - Index into f-table, either a positive number range matching the table length (ixmode = 0) or a 0 to 1 range (ixmode != 0).
    </p>
        <p>
      <span class="emphasis"><em>ifn</em></span> - table number
    </p>
        <p>
      <span class="emphasis"><em>iout1...ioutN</em></span> - output vector elements
    </p>
        <p>
      <span class="emphasis"><em>ixmode</em></span> -  index data mode. The default value is 0.</p>
        <p>                == 0 index is treated as a raw table location,</p>
        <p>                == 1 index is normalized (0 to 1).</p>
        <p>
      <span class="emphasis"><em>interp</em></span> -  vtable (vector table) family of opcodes allows the user to switch beetween interpolated or non-interpolated output by means of the interp argument.
    </p>
      </div>
      <div class="refsect1">
        <a id="idp166885728"></a>
        <h2>Performance</h2>
        <p>
      This opcode is useful in all cases in which one needs to access sets of values associated to unique indexes (for example, multi-channel samples, STFT bin frames, spectral formants, p-field based scores etc.). The number of elements of each vector (length of the vector) is determined by the number of optional arguments on the right (iout1 , iout2, iout3, ....  ioutN).
    </p>
        <p>
      <span class="emphasis"><em>vtable</em></span> (vector table) family of opcodes allows the user to switch beetween interpolated or non-interpolated output by means of the interp argument.
    </p>
        <p>
      Notice that no wrap nor limit mode is implemented.  So, if  an index attempt to access to a zone not allocated by the table, Csound will probably crash. However this drawback can be easily avoided by using wrap or limit opcodes applied to indexes before using vtable, in order to correct eventual out-of-range values.
    </p>
        <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
          <table border="0" summary="Note">
            <tr>
              <td rowspan="2" align="center" valign="top" width="25">
                <img alt="[Note]" src="images/note.png" />
              </td>
              <th align="left">Note</th>
            </tr>
            <tr>
              <td align="left" valign="top">
                <p>
        Notice that <span class="emphasis"><em>vtablei</em></span>'s output arguments are placed at the right of the opcode name, differently from usual (this style is already used in other opcodes using undefined lists of output arguments such as <a class="link" href="fin.html" title="fin"><em class="citetitle">fin</em></a> or <a class="link" href="trigseq.html" title="trigseq"><em class="citetitle">trigseq</em></a>).
      </p>
              </td>
            </tr>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="idp166893136"></a>
        <h2>Examples</h2>
        <p>
      Here is an example of the vtablei opcode. It uses the files <a class="ulink" href="examples/vtablei.csd" target="_top"><em class="citetitle">vtablei.csd</em></a>

      </p>
        <div class="example">
          <a id="idp166894992"></a>
          <p class="title">
            <strong>Example 1032. Example of the vtablei opcode.</strong>
          </p>
          <div class="example-contents">
            <pre class="programlisting">
<span class="csdtag">&lt;CsoundSynthesizer&gt;</span>
<span class="csdtag">&lt;CsOptions&gt;</span>
-odac -B441 -b441
<span class="csdtag">&lt;/CsOptions&gt;</span>
<span class="csdtag">&lt;CsInstruments&gt;</span>

<span class="ohdr">sr</span>     <span class="op">=</span>        44100
<span class="ohdr">kr</span>     <span class="op">=</span>        100
<span class="ohdr">ksmps</span>  <span class="op">=</span>        441
<span class="ohdr">nchnls</span> <span class="op">=</span>        2

gindx <span class="opc">init</span> 0

       <span class="oblock">instr</span>    1
kindex <span class="opc">init</span> 0
ktrig <span class="opc">metro</span> 0.5
<span class="octrl">if</span> ktrig <span class="op">=</span> 0 <span class="octrl">goto</span> <span class="olabel">noevent</span>
<span class="opc">event</span> "i", 2, 0, 0.5, kindex
kindex <span class="op">=</span> kindex <span class="op">+</span> 1
<span class="olabel">noevent</span><span class="op">:</span>

	<span class="oblock">endin</span>

	<span class="oblock">instr</span>	2
iout1 <span class="opc">init</span> 0
iout2 <span class="opc">init</span> 0
iout3 <span class="opc">init</span> 0
iout4 <span class="opc">init</span> 0
indx <span class="op">=</span> p4
<span class="opc">vtablei</span>  indx, 1, 1, 0, iout1,iout2, iout3, iout4
<span class="opc">print</span> iout1, iout2, iout3, iout4
<span class="opc">turnoff</span>
	<span class="oblock">endin</span>

<span class="csdtag">&lt;/CsInstruments&gt;</span>
<span class="csdtag">&lt;CsScore&gt;</span>
<span class="stamnt">f</span> 1 0 32 10 1
<span class="stamnt">i</span> 1 0 20

<span class="csdtag">&lt;/CsScore&gt;</span>
<span class="csdtag">&lt;/CsoundSynthesizer&gt;</span>
</pre>
          </div>
        </div>
        <p><br class="example-break" />
    </p>
      </div>
      <div class="refsect1">
        <a id="idp166896912"></a>
        <h2>See also</h2>
        <p>
      <a class="link" href="vtablea.html" title="vtablea"><em class="citetitle">vtablea</em></a>,
      <a class="link" href="vtablek.html" title="vtablek"><em class="citetitle">vtablek</em></a>,
      <a class="link" href="vtabi.html" title="vtabi"><em class="citetitle">vtabi</em></a>,
      <a class="link" href="vtablewi.html" title="vtablewi"><em class="citetitle">vtablewi</em></a>,
      <a class="link" href="vtabwi.html" title="vtabwi"><em class="citetitle">vtabwi</em></a>,
    </p>
      </div>
      <div class="refsect1">
        <a id="idp166902928"></a>
        <h2>Credits</h2>
        <p>Example written by Andres Cabrera.</p>
        <p>New in Csound 5 (Previously available only on CsoundAV)</p>
      </div>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="vtable1k.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="OpcodesTop.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="vtablek.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">vtable1k </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> vtablek</td>
        </tr>
      </table>
    </div>
  </body>
</html>
